package com.xxxx.server.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.xxxx.server.pojo.Menu;
import org.apache.ibatis.annotations.Param;
import org.springframework.cache.annotation.CacheConfig;
import org.springframework.cache.annotation.CachePut;
import org.springframework.cache.annotation.Cacheable;

import java.util.List;

/**
 * <p>
 *  Mapper 接口
 * </p>
 *
 * @author zhoubin
 * @since 2020-10-15
 */
@CacheConfig(cacheNames = "menu")
public interface MenuMapper extends BaseMapper<Menu> {

	/**
	 * 根据当前登录用户获取菜单
	 * @param id
	 * @return
	 */
	@Cacheable(key = "#role")
	List<Menu> getMenusByAdminId(@Param("rids") List<Integer> rids ,@Param("role") String role);

	/**
	 * 查询所有菜单及对应角色
	 *
	 * @return
	 */
	List<Menu> getMenusWithRoles();

	/**
	 * 根据roleId和parentId查询菜单
	 * @param rid
	 * @return 角色的列表集合
	 */
	List<Menu> selectMenusByRoleId(@Param("rid") Integer rid,@Param("parentId") Integer parentId);

	List<Menu> getRootMenu();

	/**
	 * 根据parent查询菜单集合
	 * @param parentId
	 * @return
	 */
	List<Menu> getMenusByParentId(Integer parentId);

	/**
	 * 新增menu
	 * @param menu
	 * @return
	 */
	void insertMenu(@Param("menu") Menu menu);

	/**
	 * 通过id删除menu
	 * @param menu
	 * @return
	 */
	void delMenuById(Menu menu);

	/**
	 * 修改菜单内容
	 * @param menu
	 */
    int updMenu(@Param("menu") Menu menu);

    void updMenuEnambled(Integer menuId, Boolean enabled);
}
